use std::collections::HashMap;

pub fn converter(input: &str) -> String {
    let mut hanzi_to_wade_giles = HashMap::new();

    // ("中国", "Chung kuo"),
    hanzi_to_wade_giles.insert('中', "chung");
    hanzi_to_wade_giles.insert('国', "kuo");
    // ("诸葛亮", "Chu ko liang"),
    hanzi_to_wade_giles.insert('诸', "chu");
    hanzi_to_wade_giles.insert('葛', "ko");
    hanzi_to_wade_giles.insert('亮', "liang");
    // ("孙中山", "Sun chung shan"),
    hanzi_to_wade_giles.insert('孙', "sun");
    hanzi_to_wade_giles.insert('中', "chung");
    hanzi_to_wade_giles.insert('山', "shan");
    // ("台湾", "T'ai wan"),
    hanzi_to_wade_giles.insert('台', "t'ai");
    hanzi_to_wade_giles.insert('湾', "wan");
    // ("香港", "Hsiang kang"),
    hanzi_to_wade_giles.insert('香', "hsiang");
    hanzi_to_wade_giles.insert('港', "kang");
    // ("澳門", "Ao men"),
    hanzi_to_wade_giles.insert('澳', "ao");
    hanzi_to_wade_giles.insert('門', "men");
    // ("川普", "Ch'uan p'u"),
    hanzi_to_wade_giles.insert('川', "ch'uan");
    hanzi_to_wade_giles.insert('普', "p'u");
    // ("四川", "Ssu ch'uan"),
    hanzi_to_wade_giles.insert('四', "ssu");
    hanzi_to_wade_giles.insert('川', "ch'uan");
    // ("廣州", "Kuang chou"),
    hanzi_to_wade_giles.insert('廣', "kuang");
    hanzi_to_wade_giles.insert('州', "chou");

    let mut result = String::new();
    for c in input.chars() {
        if let Some(pinyin) = hanzi_to_wade_giles.get(&c) {
            result.push_str(pinyin);
            result.push(' ');
        }
    }
    // 第一个字母大写
    if result.len() > 0 {
        result = result
            .chars()
            .enumerate()
            .map(|(i, c)| if i == 0 { c.to_ascii_uppercase() } else { c })
            .collect();
        result.pop();
    }
    result
}
